package com.own.component.common.base.service.item;

import com.own.component.common.base.entity.po.BaseBean;

import java.util.function.BiConsumer;
import java.util.function.Function;

/**
 * BaseAdvanceService
 *
 * @author chenxueli
 * @date 2024-05-09 22:29:00
 */
public interface BaseAdvanceService<
        PO extends BaseBean
        > {

    /**
     * 设置项目的开关状态
     * <p>
     * 该状态仅有两种状态 0=关闭 1=开启
     *
     * @param id  主键id
     * @param get 获取状态的方法
     * @param set 设置状态的方法
     */
    default void updateSwitchStatus(Long id, Function<PO, Integer> get, BiConsumer<PO, Integer> set) {
        updateSwitchStatus(id, null, get, set);
    }

    /**
     * 设置项目的开关状态
     * <p>
     * 该状态仅有两种状态 0=关闭 1=开启
     *
     * @param id           主键id
     * @param switchStatus 目标状态状态
     * @param get          获取状态的方法
     * @param set          设置状态的方法
     */
    void updateSwitchStatus(Long id, Integer switchStatus, Function<PO, Integer> get, BiConsumer<PO, Integer> set);

}
